home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / lang / SmallEiffel.lha / SmallEiffel / bin_c / compile.c < prev    next >
C/C++ Source or Header  |  1998-12-22  |  38KB  |  1,749 lines

  1. /*
  2. -- ANSI C code generated by :
  3. -- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.79)      --
  4. -- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
  5. -- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
  6. --                 http://www.loria.fr/SmallEiffel              --
  7. */
  8. #include "compile.h"
  9. T34 M34=NULL;
  10. T36 M36={NULL};
  11. T27 M27={NULL,NULL,NULL};
  12. T20 M20={0};
  13. T38 M38={NULL,0,0};
  14. T7 M7={NULL,0,0};
  15. T30 M30={NULL,0,0,0};
  16. T22 M22=NULL;
  17. T10 M10={0};
  18. T28 M28={0,NULL,0,0};
  19. T35 M35=0;
  20.  
  21.  
  22. T7*se_ms(int c,char*e){
  23. T7*s=malloc(sizeof(T7));
  24. s->_count=c;
  25. s->_capacity=c+1;
  26. s->_storage=malloc(c+2);
  27. memcpy(s->_storage,e,c);
  28. return s;}
  29.  
  30.  
  31. T7*e2s(char*e){
  32. return se_ms(strlen(e),e);}
  33.  
  34.  
  35. char*s2e(T7*s){
  36. char*e=malloc(1+s->_count);
  37. memcpy(e,s->_storage,s->_count);
  38. e[s->_count]='\0';
  39. return e;}
  40. /*
  41. -- This file is  free  software, which  comes  along  with  SmallEiffel. This
  42. -- software  is  distributed  in the hope that it will be useful, but WITHOUT 
  43. -- ANY  WARRANTY;  without  even  the  implied warranty of MERCHANTABILITY or
  44. -- FITNESS  FOR A PARTICULAR PURPOSE. You can modify it as you want, provided
  45. -- this header is kept unaltered, and a notification of the changes is added.
  46. -- You  are  allowed  to  redistribute  it and sell it, alone or as a part of 
  47. -- another product.
  48. --          Copyright (C) 1994-98 LORIA - UHP - CRIN - INRIA - FRANCE
  49. --            Dominique COLNET and Suzanne COLLIN - colnet@loria.fr 
  50. --                       http://www.loria.fr/SmallEiffel
  51. --
  52. */
  53.  
  54. /*
  55.   This file (boost.c) is automatically included when `run_control.boost' is
  56.   true (ie. only for mode -boost).
  57. */
  58.  
  59. void se_print_run_time_stack (void) {
  60.   fprintf(SE_ERR,"Eiffel program crash at run time.\n");
  61.   fprintf(SE_ERR,"No trace when using option \"-boost\"\n");
  62. }
  63.  
  64. void sigrsp(int sig) {
  65.   printf("Received signal %d (man signal).\n",sig);
  66.   se_print_run_time_stack();
  67.   exit(1);
  68. }
  69.  
  70.  
  71. T3 r3to_upper(T3 C){
  72. T3 R=0;
  73. /*[IF*/
  74. if((((unsigned char)C))<(97)){
  75. R=C;
  76. }
  77.  else if((((unsigned char)C))>(122)){
  78. R=C;
  79. }
  80. else{
  81. R=((T3)((((unsigned char)C))-(32)));
  82. }
  83. /*FI]*/
  84. return R;
  85. }
  86.  
  87.  
  88. T6 r3is_separator(T3 C){
  89. T6 R=0;
  90. {int z1=C;
  91.  
  92. if((0==z1)||((9<=z1)&&(z1<=10))||(13==z1)||(32==z1)){
  93. R=1;
  94. }
  95. }
  96. return R;
  97. }
  98.  
  99.  
  100. T3 r3to_lower(T3 C){
  101. T3 R=0;
  102. /*[IF*/
  103. if((((unsigned char)C))<(65)){
  104. R=C;
  105. }
  106.  else if((((unsigned char)C))>(90)){
  107. R=C;
  108. }
  109. else{
  110. R=((T3)((((unsigned char)C))+(32)));
  111. }
  112. /*FI]*/
  113. return R;
  114. }
  115.  
  116.  
  117. T6 r3is_letter(T3 C){
  118. T6 R=0;
  119. {int z1=C;
  120.  
  121. if(((65<=z1)&&(z1<=90))||((97<=z1)&&(z1<=122))){
  122. R=1;
  123. }
  124. }
  125. return R;
  126. }
  127.  
  128.  
  129. T6 r3is_digit(T3 C){
  130. T6 R=0;
  131. {int z1=C;
  132.  
  133. if(((48<=z1)&&(z1<=57))){
  134. R=1;
  135. }
  136. }
  137. return R;
  138. }
  139.  
  140.  
  141. T6 r6_ix_not(T6 C){
  142. T6 R=0;
  143. /*[IF*/
  144. if(C){
  145. }
  146. else{
  147. R=1;
  148. }
  149. /*FI]*/
  150. return R;
  151. }
  152.  
  153.  
  154. void r33set_all_with(T33 C,T0* a1,T2 a2){
  155. T2 _i=0;
  156. _i=a2;
  157. while (!((_i)<(0))) {
  158. (C)[_i]=(a1);
  159. _i=(_i)-(1);
  160. }
  161. }
  162.  
  163.  
  164. T6 r33equal_like(T0* a1,T0* a2){
  165. T6 R=0;
  166. /*[IF*/
  167. /*AF*//*AF*/if((a1)==((void*)(a2))){
  168. R=1;
  169. }
  170.  else if(((a1)==((void*)(NULL)))||((a2)==((void*)(NULL)))){
  171. }
  172. else{
  173. R=r7is_equal(((T7*)a1),a2);
  174. }
  175. /*FI]*/
  176. return R;
  177. }
  178.  
  179.  
  180. T2 r33index_of(T33 C,T0* a1,T2 a2){
  181. T2 R=0;
  182. while (!(((R)>(a2))||(r33equal_like(a1,(C)[R])))) {
  183. R=(R)+(1);
  184. }
  185. return R;
  186. }
  187.  
  188.  
  189. T6 r9fast_memcmp(T9 C,T9 a1,T2 a2){
  190. T6 R=0;
  191. T2 _i=0;
  192. R=1;
  193. _i=(a2)-(1);
  194. while (!(((_i)<(0))||(!(R)))) {
  195. R=((C)[_i])==((a1)[_i]);
  196. _i=(_i)-(1);
  197. }
  198. return R;
  199. }
  200.  
  201.  
  202. T9 r9realloc(T9 C,T2 a1,T2 a2){
  203. T9 R=NULL;
  204. R=calloc(a2,sizeof(T3));
  205. r9copy_from(R,C,(a1)-(1));
  206. return R;
  207. }
  208.  
  209.  
  210. void r9copy_at(T9 C,T2 a1,T9 a2,T2 a3){
  211. T2 _i2=0;
  212. T2 _i1=0;
  213. _i1=a1;
  214. while (!((_i2)==(a3))) {
  215. (C)[_i1]=((a2)[_i2]);
  216. _i2=(_i2)+(1);
  217. _i1=(_i1)+(1);
  218. }
  219. }
  220.  
  221.  
  222. T2 r9fast_index_of(T9 C,T3 a1,T2 a2){
  223. T2 R=0;
  224. while (!(((R)>(a2))||((a1)==((C)[R])))) {
  225. R=(R)+(1);
  226. }
  227. return R;
  228. }
  229.  
  230.  
  231. void r9copy_from(T9 C,T9 a1,T2 a2){
  232. T2 _i=0;
  233. _i=a2;
  234. while (!((_i)<(0))) {
  235. (C)[_i]=((a1)[_i]);
  236. _i=(_i)-(1);
  237. }
  238. }
  239.  
  240.  
  241. void r7remove_first(T7* C,T2 a1){
  242. /*[IF*/
  243. if((a1)>(0)){
  244. r7remove_between(C,1,a1);
  245. }
  246. /*FI]*/
  247. }
  248.  
  249.  
  250. T6 r7has(T7* C,T3 a1){
  251. T6 R=0;
  252. R=(r7index_of(C,a1))!=(((C)->_count/*4*/)+(1));
  253. return R;
  254. }
  255.  
  256.  
  257. T8 r7to_external(T7* C){
  258. T8 R=0;
  259. /*[IF*/
  260. if(((C)->_capacity/*8*/)>((C)->_count/*4*/)){
  261. C->_count=((C)->_count/*4*/)+(1);
  262. /*[IF*/
  263. if((/*(IRF4.6item*/((C)->_storage/*0*/)[((C)->_count/*4*/)-(1)]/*)*/)!=('\0')){
  264. /*[IRF3.5put*/((C)->_storage/*0*/)[((C)->_count/*4*/)-(1)]=('\0');
  265. /*]*/
  266. }
  267. /*FI]*/
  268. }
  269. else{
  270. r7extend(C,'\0');
  271. }
  272. /*FI]*/
  273. C->_count=((C)->_count/*4*/)-(1);
  274. R=((void*)(C)->_storage/*0*/);
  275. return R;
  276. }
  277.  
  278.  
  279. void r7to_upper(T7* C){
  280. T2 _i=0;
  281. _i=(C)->_count/*4*/;
  282. while (!((_i)==(0))) {
  283. /*[IRF3.5put*/((C)->_storage/*0*/)[(_i)-(1)]=(r3to_upper(/*(IRF4.6item*/((C)->_storage/*0*/)[(_i)-(1)]/*)*/));
  284. /*]*/
  285. _i=(_i)-(1);
  286. }
  287. }
  288. /*No:STRING.remove_suffix*/
  289.  
  290.  
  291. T0* r7twin(T7* C){
  292. T0* R=NULL;
  293. R=malloc(sizeof(*C));
  294. *((T7*)R)=M7;
  295. r7copy(((T7*)R),((T0*)C));
  296. return R;
  297. }
  298.  
  299.  
  300. void r7set_last(T7* C,T3 a1){
  301. /*[IF*/
  302. if((((C)->_count/*4*/)==(0))||((/*(IRF4.6item*/((C)->_storage/*0*/)[((C)->_count/*4*/)-(1)]/*)*/)!=(a1))){
  303. r7extend(C,a1);
  304. }
  305. /*FI]*/
  306. }
  307.  
  308.  
  309. void r7remove_last(T7* C,T2 a1){
  310. C->_count=((C)->_count/*4*/)-(a1);
  311. }
  312.  
  313.  
  314. void r7to_lower(T7* C){
  315. T2 _i=0;
  316. _i=(C)->_count/*4*/;
  317. while (!((_i)==(0))) {
  318. /*[IRF3.5put*/((C)->_storage/*0*/)[(_i)-(1)]=(r3to_lower(/*(IRF4.6item*/((C)->_storage/*0*/)[(_i)-(1)]/*)*/));
  319. /*]*/
  320. _i=(_i)-(1);
  321. }
  322. }
  323.  
  324.  
  325. T6 r7is_equal(T7* C,T0* a1){
  326. T6 R=0;
  327. /*[IF*/
  328. if((C)==((void*)(a1))){
  329. R=1;
  330. }
  331.  else if(((C)->_count/*4*/)==((((T7*)a1))->_count/*4*/)){
  332. R=r9fast_memcmp((C)->_storage/*0*/,(((T7*)a1))->_storage/*0*/,(C)->_count/*4*/);
  333. }
  334. /*FI]*/
  335. return R;
  336. }
  337.  
  338.  
  339. T6 r7has_suffix(T7* C,T0* a1){
  340. T6 R=0;
  341. T2 _i2=0;
  342. T2 _i1=0;
  343. /*[IF*/
  344. if(((((T7*)a1))->_count/*4*/)<=((C)->_count/*4*/)){
  345. _i1=(((C)->_count/*4*/)-((((T7*)a1))->_count/*4*/))+(1);
  346. _i2=1;
  347. while (!((((_i1)>((C)->_count/*4*/))||((_i2)>((((T7*)a1))->_count/*4*/)))||((/*(IRF4.6item*/((C)->_storage/*0*/)[(_i1)-(1)]/*)*/)!=(/*(IRF4.6item*/((((T7*)a1))->_storage/*0*/)[(_i2)-(1)]/*)*/)))) {
  348. _i1=(_i1)+(1);
  349. _i2=(_i2)+(1);
  350. }
  351. R=(_i1)>((C)->_count/*4*/);
  352. }
  353. /*FI]*/
  354. return R;
  355. }
  356. /*No:STRING.item*/
  357.  
  358.  
  359. void r7remove_between(T7* C,T2 a1,T2 a2){
  360. T2 _i=0;
  361. _i=a2;
  362. while (!((_i)>=((C)->_count/*4*/))) {
  363. /*[IRF3.5put*/((C)->_storage/*0*/)[(((a1)+(_i))-(a2))-(1)]=(/*(IRF4.6item*/((C)->_storage/*0*/)[((_i)+(1))-(1)]/*)*/);
  364. /*]*/
  365. _i=(_i)+(1);
  366. }
  367. C->_count=((C)->_count/*4*/)-(((a2)-(a1))+(1));
  368. }
  369.  
  370.  
  371. T3 r7last(T7* C){
  372. T3 R=0;
  373. R=/*(IRF4.6item*/((C)->_storage/*0*/)[((C)->_count/*4*/)-(1)]/*)*/;
  374. return R;
  375. }
  376. /*No:STRING.count*/
  377.  
  378.  
  379. void r7make(T7* C,T2 a1){
  380. /*[IF*/
  381. if((a1)>(0)){
  382. /*[IF*/
  383. if(((C)->_capacity/*8*/)<(a1)){
  384. C->_storage=calloc(a1,sizeof(T3));
  385. C->_capacity=a1;
  386. }
  387. /*FI]*/
  388. }
  389. /*FI]*/
  390. C->_count=0;
  391. }
  392.  
  393.  
  394. void r7append(T7* C,T0* a1){
  395. T2 _needed_capacity=0;
  396. T2 _other_count=0;
  397. _other_count=(((T7*)a1))->_count/*4*/;
  398. _needed_capacity=((C)->_count/*4*/)+(_other_count);
  399. /*[IF*/
  400. if(((C)->_capacity/*8*/)<(_needed_capacity)){
  401. /*[IF*/
  402. if(((C)->_capacity/*8*/)==(0)){
  403. C->_capacity=_needed_capacity;
  404. C->_storage=calloc((C)->_capacity/*8*/,sizeof(T3));
  405. }
  406. else{
  407. C->_storage=r9realloc((C)->_storage/*0*/,(C)->_capacity/*8*/,_needed_capacity);
  408. C->_capacity=_needed_capacity;
  409. }
  410. /*FI]*/
  411. }
  412. /*FI]*/
  413. r9copy_at((C)->_storage/*0*/,(C)->_count/*4*/,(((T7*)a1))->_storage/*0*/,_other_count);
  414. C->_count=_needed_capacity;
  415. }
  416.  
  417.  
  418. void r7extend(T7* C,T3 a1){
  419. T2 _new_capacity=0;
  420. /*[IF*/
  421. if(((C)->_capacity/*8*/)>((C)->_count/*4*/)){
  422. }
  423.  else if(((C)->_capacity/*8*/)==(0)){
  424. C->_capacity=32;
  425. C->_storage=calloc((C)->_capacity/*8*/,sizeof(T3));
  426. }
  427. else{
  428. _new_capacity=(2)*((C)->_capacity/*8*/);
  429. C->_storage=r9realloc((C)->_storage/*0*/,(C)->_capacity/*8*/,_new_capacity);
  430. C->_capacity=_new_capacity;
  431. }
  432. /*FI]*/
  433. C->_count=((C)->_count/*4*/)+(1);
  434. /*[IRF3.5put*/((C)->_storage/*0*/)[((C)->_count/*4*/)-(1)]=(a1);
  435. /*]*/
  436. }
  437. /*No:STRING.clear*/
  438.  
  439.  
  440. void r7copy(T7* C,T0* a1){
  441. C->_count=(((T7*)a1))->_count/*4*/;
  442. /*[IF*/
  443. if(((C)->_count/*4*/)>(0)){
  444. /*[IF*/
  445. if(((C)->_capacity/*8*/)<((C)->_count/*4*/)){
  446. C->_storage=calloc((C)->_count/*4*/,sizeof(T3));
  447. C->_capacity=(C)->_count/*4*/;
  448. }
  449. /*FI]*/
  450. r9copy_from((C)->_storage/*0*/,(((T7*)a1))->_storage/*0*/,((C)->_count/*4*/)-(1));
  451. }
  452. /*FI]*/
  453. }
  454.  
  455.  
  456. T2 r7index_of(T7* C,T3 a1){
  457. T2 R=0;
  458. R=(1)+(r9fast_index_of((C)->_storage/*0*/,a1,((C)->_count/*4*/)-(1)));
  459. return R;
  460. }
  461. /*No:STRING.capacity*/
  462. /*No:STRING.put*/
  463. /*No:STRING.storage*/
  464. /*No:FIXED_ARRAY[STRING].clear_all*/
  465. /*No:FIXED_ARRAY[STRING].item*/
  466. /*No:FIXED_ARRAY[STRING].set_all_with*/
  467.  
  468.  
  469. void r38make(T38* C,T2 a1){
  470. /*[IF*/
  471. if((a1)==(0)){
  472. C->_upper=-(1);
  473. }
  474.  else if(((C)->_capacity/*4*/)==(0)){
  475. C->_storage=calloc(a1,sizeof(T0*));
  476. C->_capacity=a1;
  477. C->_upper=(a1)-(1);
  478. }
  479.  else if(((C)->_capacity/*4*/)<(a1)){
  480. C->_storage=calloc(a1,sizeof(T0*));
  481. C->_capacity=a1;
  482. C->_upper=(a1)-(1);
  483. }
  484. else{
  485. C->_upper=(a1)-(1);
  486. /*[IRF3.6clear_all*/{T38* C1=C;
  487. T0* __value=NULL;
  488. /*[IRF3.6set_all_with*/{T38* C2=C1;
  489. T0* c1=__value;
  490. r33set_all_with((C2)->_storage/*0*/,c1,(C2)->_upper/*8*/);
  491. }/*]*/
  492. }/*]*/
  493. }
  494. /*FI]*/
  495. }
  496. /*No:FIXED_ARRAY[STRING].upper*/
  497. /*No:FIXED_ARRAY[STRING].capacity*/
  498. /*No:FIXED_ARRAY[STRING].put*/
  499. /*No:FIXED_ARRAY[STRING].storage*/
  500.  
  501.  
  502. T0* r30item(T30* C,T2 a1){
  503. T0* R=NULL;
  504. R=((C)->_storage/*0*/)[(a1)-((C)->_lower/*12*/)];
  505. return R;
  506. }
  507. /*No:ARRAY[STRING].lower*/
  508. /*No:ARRAY[STRING].upper*/
  509.  
  510.  
  511. T2 r30index_of(T30* C,T0* a1){
  512. T2 R=0;
  513. R=((C)->_lower/*12*/)+(r33index_of((C)->_storage/*0*/,a1,((C)->_upper/*8*/)-((C)->_lower/*12*/)));
  514. return R;
  515. }
  516. /*No:ARRAY[STRING].capacity*/
  517. /*No:ARRAY[STRING].storage*/
  518. /*No:STD_ERROR.flush*/
  519.  
  520.  
  521. void r34put_string(T34* C,T0* a1){
  522. T2 _i=0;
  523. _i=1;
  524. while (!((_i)>((((T7*)a1))->_count/*4*/))) {
  525. /*[IRF3.6put_character*/{T34* C1=C;
  526. T3 b1=/*(IRF4.6item*/((((T7*)a1))->_storage/*0*/)[(_i)-(1)]/*)*/;
  527. putc(b1,((FILE*)(stderr)));
  528. }/*]*/
  529. _i=(_i)+(1);
  530. }
  531. }
  532. /*No:STD_ERROR.make*/
  533. /*No:STD_ERROR.put_character*/
  534. /*No:RUN_CONTROL.root_class*/
  535. /*No:RUN_CONTROL.eiffel_suffix*/
  536. /*No:RUN_CONTROL.make*/
  537.  
  538.  
  539. void r36compute_root_class(T36* C,T0* a1){
  540. T3 _c=0;
  541. T2 _i=0;
  542. C->_root_class=r7twin(((T7*)a1));
  543. /*[IF*/
  544. if(r7has_suffix((T7*)((C)->_root_class/*0*/),((T0*)ms11_300))){
  545. r7remove_last((T7*)((C)->_root_class/*0*/),2);
  546. }
  547. /*FI]*/
  548. _i=((T7*)((C)->_root_class/*0*/))->_count/*4*/;
  549. while (!((_i)==(0))) {
  550. _c=/*(IRF4.6item*/(((T7*)((C)->_root_class/*0*/))->_storage/*0*/)[(_i)-(1)]/*)*/;
  551. /*[IF*/
  552. if(r3is_letter(_c)){
  553. _i=(_i)-(1);
  554. }
  555.  else if((_c)==('\137')){
  556. _i=(_i)-(1);
  557. }
  558.  else if(r3is_digit(_c)){
  559. _i=(_i)-(1);
  560. }
  561. else{
  562. r7remove_first((T7*)((C)->_root_class/*0*/),_i);
  563. _i=0;
  564. }
  565. /*FI]*/
  566. }
  567. r7to_upper((T7*)((C)->_root_class/*0*/));
  568. }
  569.  
  570.  
  571. T0* r27remove_make_script(T27* C){
  572. T0* R=NULL;
  573. R=r27path_h(C);
  574. /*[IRF3.6remove_suffix*/{T7* C1=((T7*)R);
  575. T0* b1=((T0*)ms11_306);
  576. r7remove_last(C1,(((T7*)b1))->_count/*4*/);
  577. }/*]*/
  578. r7append(((T7*)R),r27make_suffix(C));
  579. r20file_removing((T20*)(oBC11echo),R);
  580. return R;
  581. }
  582. /*No:SYSTEM_TOOLS.system_name*/
  583.  
  584.  
  585. void r27parent_directory(T27* C,T0* a1){
  586. /*[IF*/
  587. if(r27slash_separator(C)){
  588. r7remove_last(((T7*)a1),1);
  589. while (!((r7last(((T7*)a1)))==('\57'))) {
  590. r7remove_last(((T7*)a1),1);
  591. }
  592. }
  593.  else if(r27backslash_separator(C)){
  594. r7remove_last(((T7*)a1),1);
  595. while (!((r7last(((T7*)a1)))==('\134'))) {
  596. r7remove_last(((T7*)a1),1);
  597. }
  598. }
  599.  else if(r27colon_separator(C)){
  600. r7remove_last(((T7*)a1),1);
  601. while (!((r7last(((T7*)a1)))==('\72'))) {
  602. r7remove_last(((T7*)a1),1);
  603. }
  604. }
  605.  else if((((T0*)ms27_756))==((void*)((C)->_system_name/*0*/))){
  606. r7remove_last(((T7*)a1),1);
  607. while (!((r7last(((T7*)a1)))==('\56'))) {
  608. r7remove_last(((T7*)a1),1);
  609. }
  610. r7remove_last(((T7*)a1),1);
  611. r7extend(((T7*)a1),'\135');
  612. }
  613. /*FI]*/
  614. }
  615. /*No:SYSTEM_TOOLS.windows_system*/
  616. /*No:SYSTEM_TOOLS.us_compile_to_c*/
  617. int fBC27o_suffix_memory=0;
  618. T0*oBC27o_suffix_memory=NULL;
  619.  
  620.  
  621. T0* r27o_suffix_memory(T27* C){
  622. if(fBC27o_suffix_memory==0){
  623. fBC27o_suffix_memory=1;
  624. {T7*n=malloc(sizeof(*n));
  625. *n=M7;
  626. r7make(n,4);
  627. oBC27o_suffix_memory=(T0*)n;
  628. }
  629. r7copy((T7*)(((T0*)ms11_583550)),(C)->_sys_directory/*4*/);
  630. r7append((T7*)(((T0*)ms11_583550)),((T0*)ms27_8721));
  631. r7append((T7*)(((T0*)ms11_583550)),(C)->_system_name/*0*/);
  632. r20sfr_connect_or_exit((T20*)(oBC11echo),oBC11tmp_file_read,((T0*)ms11_583550));
  633. oBC27o_suffix_memory=r20read_word_in((T20*)(oBC11echo),oBC11tmp_file_read);
  634. r28disconnect((T28*)(oBC11tmp_file_read));
  635. }
  636. return oBC27o_suffix_memory;}
  637. T0*oBC11tmp_file_read=NULL;
  638. /*No:SYSTEM_TOOLS.fz_clean*/
  639. /*No:SYSTEM_TOOLS.help_suffix*/
  640. /*No:SYSTEM_TOOLS.fz_03*/
  641. /*No:SYSTEM_TOOLS.vms_system*/
  642. /*No:SYSTEM_TOOLS.fz_se*/
  643.  
  644.  
  645. T0* r27path_h(T27* C){
  646. T0* R=NULL;
  647. R=r7twin((T7*)(((T36*)(oBC11run_control))->_root_class/*0*/));
  648. r7to_lower(((T7*)R));
  649. /*[IF*/
  650. if((((T0*)ms27_708))==((void*)((C)->_system_name/*0*/))){
  651. while (!(((((T7*)R))->_count/*4*/)<=(4))) {
  652. r7remove_last(((T7*)R),1);
  653. }
  654. }
  655. /*FI]*/
  656. r7append(((T7*)R),((T0*)ms11_306));
  657. return R;
  658. }
  659. /*No:SYSTEM_TOOLS.beos_system*/
  660.  
  661.  
  662. T0* r27get_environment_variable(T27* C,T0* a1){
  663. T0* R=NULL;
  664. T8 _p=0;
  665. _p=r7to_external(((T7*)a1));
  666. R=(NULL==(_p=getenv((char*)_p)))?NULL:((T0*)e2s((char*)_p));
  667. return R;
  668. }
  669. /*No:SYSTEM_TOOLS.fz_sys*/
  670. /*No:SYSTEM_TOOLS.fz_system_se*/
  671. /*No:SYSTEM_TOOLS.fz_bin*/
  672. /*No:SYSTEM_TOOLS.dos_system*/
  673. /*No:SYSTEM_TOOLS.sys_directory*/
  674. int fBC27x_suffix=0;
  675. T0*oBC27x_suffix=NULL;
  676.  
  677.  
  678. T0* r27x_suffix(T27* C){
  679. if(fBC27x_suffix==0){
  680. fBC27x_suffix=1;
  681. /*[IF*/
  682. if(((((T0*)ms27_708))==((void*)((C)->_system_name/*0*/)))||((((T0*)ms27_756))==((void*)((C)->_system_name/*0*/)))){
  683. oBC27x_suffix=((T0*)ms27_1128);
  684. }
  685.  else if((((T0*)ms27_654))==((void*)((C)->_system_name/*0*/))){
  686. oBC27x_suffix=((T0*)ms27_1512);
  687. }
  688.  else if((((T0*)ms27_9331))==((void*)((C)->_system_name/*0*/))){
  689. oBC27x_suffix=((T0*)ms27_1512a);
  690. }
  691. else{
  692. oBC27x_suffix=((T0*)ms27_0);
  693. }
  694. /*FI]*/
  695. }
  696. return oBC27x_suffix;}
  697. /*No:SYSTEM_TOOLS.fz_b0*/
  698. T0*oBC27system_list=NULL;
  699. T0*oBC11run_control=NULL;
  700.  
  701.  
  702. void r27bad_use_exit(T27* C,T0* a1){
  703. r20w_put_string(((T0*)ms27_46940));
  704. r20w_put_string(a1);
  705. r20w_put_string(((T0*)ms27_303));
  706. r7copy((T7*)(((T0*)ms11_583550)),(C)->_sys_directory/*4*/);
  707. r27parent_directory(C,((T0*)ms11_583550));
  708. r27add_directory(C,((T0*)ms11_583550),((T0*)ms27_966));
  709. r7append((T7*)(((T0*)ms11_583550)),a1);
  710. r7append((T7*)(((T0*)ms11_583550)),((T0*)ms11_1632));
  711. r20w_put_string(((T0*)ms27_39440));
  712. r20w_put_string(((T0*)ms11_583550));
  713. r20w_put_character('\n');
  714. exit(1);
  715. }
  716. /*No:SYSTEM_TOOLS.amiga_system*/
  717. int fBC27make_suffix=0;
  718. T0*oBC27make_suffix=NULL;
  719.  
  720.  
  721. T0* r27make_suffix(T27* C){
  722. if(fBC27make_suffix==0){
  723. fBC27make_suffix=1;
  724. /*[IF*/
  725. if((((T0*)ms27_708))==((void*)((C)->_system_name/*0*/))){
  726. oBC27make_suffix=((T0*)ms27_1084);
  727. }
  728.  else if((((T0*)ms27_9331))==((void*)((C)->_system_name/*0*/))){
  729. oBC27make_suffix=((T0*)ms27_1468);
  730. }
  731.  else if((((T0*)ms27_756))==((void*)((C)->_system_name/*0*/))){
  732. oBC27make_suffix=((T0*)ms27_1116);
  733. }
  734.  else if((((T0*)ms27_654))==((void*)((C)->_system_name/*0*/))){
  735. oBC27make_suffix=((T0*)ms27_1072);
  736. }
  737. else{
  738. oBC27make_suffix=((T0*)ms27_2375);
  739. }
  740. /*FI]*/
  741. }
  742. return oBC27make_suffix;}
  743.  
  744.  
  745. void r27clean_in(T27* C,T0* a1){
  746. /*[IF*/
  747. if((((T0*)ms27_9331))!=((void*)((C)->_system_name/*0*/))){
  748. r7append(((T7*)a1),(C)->_bin_directory/*8*/);
  749. }
  750. /*FI]*/
  751. r7append(((T7*)a1),((T0*)ms12_2650));
  752. r7append(((T7*)a1),r27x_suffix(C));
  753. }
  754. /*No:SYSTEM_TOOLS.h_suffix*/
  755.  
  756.  
  757. void r27add_directory(T27* C,T0* a1,T0* a2){
  758. /*[IF*/
  759. if(r27slash_separator(C)){
  760. r7set_last(((T7*)a1),'\57');
  761. r7append(((T7*)a1),a2);
  762. r7set_last(((T7*)a1),'\57');
  763. }
  764.  else if(r27backslash_separator(C)){
  765. r7set_last(((T7*)a1),'\134');
  766. r7append(((T7*)a1),a2);
  767. r7set_last(((T7*)a1),'\134');
  768. }
  769.  else if(r27colon_separator(C)){
  770. r7set_last(((T7*)a1),'\72');
  771. r7append(((T7*)a1),a2);
  772. r7set_last(((T7*)a1),'\72');
  773. }
  774.  else if((((T0*)ms27_756))==((void*)((C)->_system_name/*0*/))){
  775. r7set_last(((T7*)a1),'\135');
  776. r7remove_last(((T7*)a1),1);
  777. r7set_last(((T7*)a1),'\56');
  778. r7append(((T7*)a1),a2);
  779. r7set_last(((T7*)a1),'\135');
  780. }
  781. /*FI]*/
  782. }
  783.  
  784.  
  785. void r27make(T27* C){
  786. T2 _i=0;
  787. T0* _system_se_path=NULL;
  788. _system_se_path=r27get_environment_variable(C,((T0*)ms12_18788));
  789. /*[IF*/
  790. if((_system_se_path)==((void*)(NULL))){
  791. _system_se_path=r7twin((T7*)(((T0*)ms12_18788)));
  792. r7to_upper(((T7*)_system_se_path));
  793. _system_se_path=r27get_environment_variable(C,_system_se_path);
  794. /*[IF*/
  795. if((_system_se_path)==((void*)(NULL))){
  796. r20put_string((T20*)(oBC11echo),((T0*)ms27_226958));
  797. _system_se_path=((T0*)ms27_132226);
  798. r20put_string((T20*)(oBC11echo),_system_se_path);
  799. r20put_string((T20*)(oBC11echo),((T0*)ms12_166));
  800. }
  801. /*FI]*/
  802. }
  803. /*FI]*/
  804. /*[IF*/
  805. if(r7has_suffix(((T7*)_system_se_path),((T0*)ms12_13428))){
  806. r20sfr_connect((T20*)(oBC11echo),oBC11tmp_file_read,_system_se_path);
  807. }
  808. else{
  809. r20put_string((T20*)(oBC11echo),((T0*)ms27_852461));
  810. /*[IF*/
  811. if(r7has(((T7*)_system_se_path),'\57')){
  812. r20put_string((T20*)(oBC11echo),((T0*)ms27_26690));
  813. r7copy((T7*)(((T0*)ms11_583550)),_system_se_path);
  814. r7set_last((T7*)(((T0*)ms11_583550)),'\57');
  815. r7append((T7*)(((T0*)ms11_583550)),((T0*)ms12_1071));
  816. r7extend((T7*)(((T0*)ms11_583550)),'\57');
  817. r7append((T7*)(((T0*)ms11_583550)),((T0*)ms12_13428));
  818. r20sfr_connect((T20*)(oBC11echo),oBC11tmp_file_read,((T0*)ms11_583550));
  819. }
  820. /*FI]*/
  821. /*[IF*/
  822. if(!(/*(IRF4.7is_connected*/(((T28*)(oBC11tmp_file_read))->_path/*4*/)!=(NULL)/*)*/)){
  823. /*[IF*/
  824. if(r7has(((T7*)_system_se_path),'\134')){
  825. r20put_string((T20*)(oBC11echo),((T0*)ms27_38940));
  826. r7copy((T7*)(((T0*)ms11_583550)),_system_se_path);
  827. r7set_last((T7*)(((T0*)ms11_583550)),'\134');
  828. r7append((T7*)(((T0*)ms11_583550)),((T0*)ms12_1071));
  829. r7extend((T7*)(((T0*)ms11_583550)),'\134');
  830. r7append((T7*)(((T0*)ms11_583550)),((T0*)ms12_13428));
  831. r20sfr_connect((T20*)(oBC11echo),oBC11tmp_file_read,((T0*)ms11_583550));
  832. }
  833. /*FI]*/
  834. }
  835. /*FI]*/
  836. /*[IF*/
  837. if(!(/*(IRF4.7is_connected*/(((T28*)(oBC11tmp_file_read))->_path/*4*/)!=(NULL)/*)*/)){
  838. /*[IF*/
  839. if(r7has(((T7*)_system_se_path),'\72')){
  840. r20put_string((T20*)(oBC11echo),((T0*)ms27_32565));
  841. r7copy((T7*)(((T0*)ms11_583550)),_system_se_path);
  842. r7set_last((T7*)(((T0*)ms11_583550)),'\72');
  843. r7append((T7*)(((T0*)ms11_583550)),((T0*)ms12_1071));
  844. r7extend((T7*)(((T0*)ms11_583550)),'\72');
  845. r7append((T7*)(((T0*)ms11_583550)),((T0*)ms12_13428));
  846. r20sfr_connect((T20*)(oBC11echo),oBC11tmp_file_read,((T0*)ms11_583550));
  847. }
  848. /*FI]*/
  849. }
  850. /*FI]*/
  851. /*[IF*/
  852. if(!(/*(IRF4.7is_connected*/(((T28*)(oBC11tmp_file_read))->_path/*4*/)!=(NULL)/*)*/)){
  853. /*[IF*/
  854. if(r7has(((T7*)_system_se_path),'\135')){
  855. r20put_string((T20*)(oBC11echo),((T0*)ms27_20300));
  856. r7copy((T7*)(((T0*)ms11_583550)),_system_se_path);
  857. r7set_last((T7*)(((T0*)ms11_583550)),'\135');
  858. r7remove_last((T7*)(((T0*)ms11_583550)),1);
  859. r7extend((T7*)(((T0*)ms11_583550)),'\56');
  860. r7append((T7*)(((T0*)ms11_583550)),((T0*)ms12_1071));
  861. r7extend((T7*)(((T0*)ms11_583550)),'\135');
  862. r7append((T7*)(((T0*)ms11_583550)),((T0*)ms12_13428));
  863. r20sfr_connect((T20*)(oBC11echo),oBC11tmp_file_read,((T0*)ms11_583550));
  864. }
  865. /*FI]*/
  866. }
  867. /*FI]*/
  868. /*[IF*/
  869. if(!(/*(IRF4.7is_connected*/(((T28*)(oBC11tmp_file_read))->_path/*4*/)!=(NULL)/*)*/)){
  870. r20put_string((T20*)(oBC11echo),((T0*)ms27_8302));
  871. r7copy((T7*)(((T0*)ms11_583550)),_system_se_path);
  872. r7append((T7*)(((T0*)ms11_583550)),((T0*)ms12_13428));
  873. r20sfr_connect((T20*)(oBC11echo),oBC11tmp_file_read,((T0*)ms11_583550));
  874. }
  875. /*FI]*/
  876. }
  877. /*FI]*/
  878. /*[IF*/
  879. if(!(/*(IRF4.7is_connected*/(((T28*)(oBC11tmp_file_read))->_path/*4*/)!=(NULL)/*)*/)){
  880. r20w_put_string(((T0*)ms27_720532));
  881. exit(1);
  882. }
  883. /*FI]*/
  884. r28read_line((T28*)(oBC11tmp_file_read));
  885. C->_system_name=oBC29last_string;
  886. _i=r30index_of((T30*)(oBC27system_list),(C)->_system_name/*0*/);
  887. /*[IF*/
  888. if((_i)>(((T30*)(oBC27system_list))->_upper/*8*/)){
  889. r20w_put_string(((T0*)ms27_44196));
  890. r20w_put_string(((T28*)(oBC11tmp_file_read))->_path/*4*/);
  891. r20w_put_string(((T0*)ms27_23364));
  892. _i=1;
  893. while (!((_i)>(((T30*)(oBC27system_list))->_upper/*8*/))) {
  894. r20w_put_string(r30item((T30*)(oBC27system_list),_i));
  895. r20w_put_character('\n');
  896. _i=(_i)+(1);
  897. }
  898. exit(1);
  899. }
  900. else{
  901. C->_system_name=r30item((T30*)(oBC27system_list),_i);
  902. r20put_string((T20*)(oBC11echo),((T0*)ms27_10175));
  903. r20put_string((T20*)(oBC11echo),(C)->_system_name/*0*/);
  904. r20put_string((T20*)(oBC11echo),((T0*)ms12_288));
  905. }
  906. /*FI]*/
  907. C->_sys_directory=r7twin((T7*)(((T28*)(oBC11tmp_file_read))->_path/*4*/));
  908. /*[IRF3.6remove_suffix*/{T7* C1=(T7*)((C)->_sys_directory/*4*/);
  909. T0* b1=((T0*)ms12_13428);
  910. r7remove_last(C1,(((T7*)b1))->_count/*4*/);
  911. }/*]*/
  912. r28disconnect((T28*)(oBC11tmp_file_read));
  913. C->_bin_directory=r7twin((T7*)((C)->_sys_directory/*4*/));
  914. r27parent_directory(C,(C)->_bin_directory/*8*/);
  915. r27add_directory(C,(C)->_bin_directory/*8*/,((T0*)ms12_957));
  916. }
  917. T0*oBC11echo=NULL;
  918. /*No:SYSTEM_TOOLS.os2_system*/
  919.  
  920.  
  921. T6 r27colon_separator(T27* C){
  922. T6 R=0;
  923. /*[IF*/
  924. if((((T0*)ms27_12951))==((void*)((C)->_system_name/*0*/))){
  925. R=1;
  926. }
  927.  else if((((T0*)ms27_1356))==((void*)((C)->_system_name/*0*/))){
  928. R=1;
  929. }
  930. /*FI]*/
  931. return R;
  932. }
  933.  
  934.  
  935. T6 r27slash_separator(T27* C){
  936. T6 R=0;
  937. /*[IF*/
  938. if((((T0*)ms27_1336))==((void*)((C)->_system_name/*0*/))){
  939. R=1;
  940. }
  941.  else if((((T0*)ms27_2470))==((void*)((C)->_system_name/*0*/))){
  942. R=1;
  943. }
  944. /*FI]*/
  945. return R;
  946. }
  947.  
  948.  
  949. T6 r27backslash_separator(T27* C){
  950. T6 R=0;
  951. /*[IF*/
  952. if((((T0*)ms27_9331))==((void*)((C)->_system_name/*0*/))){
  953. R=1;
  954. }
  955.  else if((((T0*)ms27_708))==((void*)((C)->_system_name/*0*/))){
  956. R=1;
  957. }
  958.  else if((((T0*)ms27_654))==((void*)((C)->_system_name/*0*/))){
  959. R=1;
  960. }
  961. /*FI]*/
  962. return R;
  963. }
  964. /*No:SYSTEM_TOOLS.unix_system*/
  965. /*No:SYSTEM_TOOLS.exit_failure_code*/
  966. /*No:SYSTEM_TOOLS.macintosh_system*/
  967. /*No:SYSTEM_TOOLS.bin_directory*/
  968.  
  969.  
  970. void r27compile_to_c_in(T27* C,T0* a1){
  971. /*[IF*/
  972. if((((T0*)ms27_9331))!=((void*)((C)->_system_name/*0*/))){
  973. r7append(((T7*)a1),(C)->_bin_directory/*8*/);
  974. }
  975. /*FI]*/
  976. r7append(((T7*)a1),((T0*)ms13_20868));
  977. r7append(((T7*)a1),r27x_suffix(C));
  978. }
  979. /*No:SYSTEM_TOOLS.tmp_path*/
  980. T0*oBC1std_error=NULL;
  981. /*No:ECHO.fz_b0*/
  982.  
  983.  
  984. void r20sfr_connect_or_exit(T20* C,T0* a1,T0* a2){
  985. r20sfr_connect(C,a1,a2);
  986. /*[IF*/
  987. if(!(/*(IRF4.7is_connected*/((((T28*)a1))->_path/*4*/)!=(NULL)/*)*/)){
  988. r20w_put_string(((T0*)ms12_3810));
  989. r20w_put_string(a2);
  990. r20w_put_string(((T0*)ms12_11640));
  991. exit(1);
  992. }
  993. /*FI]*/
  994. }
  995.  
  996.  
  997. void r20sfr_connect(T20* C,T0* a1,T0* a2){
  998. r20put_string(C,((T0*)ms20_26523));
  999. r20put_string(C,a2);
  1000. r20put_string(C,((T0*)ms12_288));
  1001. r28connect_to(((T28*)a1),a2);
  1002. }
  1003. /*No:ECHO.verbose*/
  1004.  
  1005.  
  1006. void r20search_for_verbose_flag(T20* C){
  1007. T2 _i=0;
  1008. _i=/*(IRF4.9argument_count*/((T38*)(r20command_arguments()))->_upper/*8*//*)*/;
  1009. while (!((_i)==(0))) {
  1010. /*[IF*/
  1011. if(r7is_equal((T7*)(((T0*)ms12_10392)),r20argument(_i))){
  1012. C->_verbose=1;
  1013. _i=0;
  1014. }
  1015. else{
  1016. _i=(_i)-(1);
  1017. }
  1018. /*FI]*/
  1019. }
  1020. }
  1021.  
  1022.  
  1023. void r20call_system(T20* C,T0* a1){
  1024. r20put_string(C,((T0*)ms20_12909));
  1025. r20put_string(C,a1);
  1026. r20put_string(C,((T0*)ms12_288));
  1027. r20system(a1);
  1028. }
  1029.  
  1030.  
  1031. T6 r20file_exists(T0* a1){
  1032. T6 R=0;
  1033. R=r35is_readable(a1);
  1034. return R;
  1035. }
  1036.  
  1037.  
  1038. T0* r20read_word_in(T20* C,T0* a1){
  1039. T0* R=NULL;
  1040. r20put_string(C,((T0*)ms20_25494));
  1041. r20put_string(C,(((T28*)a1))->_path/*4*/);
  1042. r20put_string(C,((T0*)ms12_288));
  1043. /*[IF*/
  1044. if(r28end_of_input(((T28*)a1))){
  1045. r20w_put_string(((T0*)ms20_72891));
  1046. r20w_put_string((((T28*)a1))->_path/*4*/);
  1047. r20w_put_string(((T0*)ms12_288));
  1048. exit(1);
  1049. }
  1050. else{
  1051. r28read_word(((T28*)a1));
  1052. R=r7twin((T7*)(oBC29last_string));
  1053. }
  1054. /*FI]*/
  1055. return R;
  1056. }
  1057.  
  1058.  
  1059. void r20w_put_string(T0* a1){
  1060. r34put_string((T34*)(oBC1std_error),a1);
  1061. /*[IRF3.6flush*/{T34* C1=(T34*)(oBC1std_error);
  1062. fflush(stderr);
  1063. }/*]*/
  1064. }
  1065.  
  1066.  
  1067. void r20system(T0* a1){
  1068. T8 _p=0;
  1069. _p=r7to_external(((T7*)a1));
  1070. system(((char*)_p));
  1071. }
  1072. T0*oBC1std_output=NULL;
  1073. /*No:ECHO.remove_file*/
  1074. /*No:ECHO.fz_01*/
  1075.  
  1076.  
  1077. void r20file_removing(T20* C,T0* a1){
  1078. /*[IF*/
  1079. if(r20file_exists(a1)){
  1080. r20put_string(C,((T0*)ms20_8760));
  1081. r20put_string(C,a1);
  1082. r20put_string(C,((T0*)ms12_288));
  1083. /*[IRF3.6remove_file*/{T0* b1=a1;
  1084. r35delete(oBC1file_tools,b1);
  1085. }/*]*/
  1086. }
  1087. /*FI]*/
  1088. }
  1089.  
  1090.  
  1091. T0* r20argument(T2 a1){
  1092. T0* R=NULL;
  1093. R=/*(IRF4.6item*/(((T38*)(r20command_arguments()))->_storage/*0*/)[a1]/*)*/;
  1094. return R;
  1095. }
  1096. T35 oBC1file_tools=0;
  1097.  
  1098.  
  1099. void r20put_string(T20* C,T0* a1){
  1100. /*[IF*/
  1101. if((C)->_verbose/*0*/){
  1102. r22put_string((T22*)(oBC1std_output),a1);
  1103. /*[IRF3.6flush*/{T22* C1=(T22*)(oBC1std_output);
  1104. fflush(stdout);
  1105. }/*]*/
  1106. }
  1107. /*FI]*/
  1108. }
  1109. /*No:ECHO.make*/
  1110. /*No:ECHO.fz_43*/
  1111. /*No:ECHO.argument_count*/
  1112. /*No:ECHO.exit_failure_code*/
  1113. /*No:ECHO.fz_verbose_flag*/
  1114. int fBC1command_arguments=0;
  1115. T0*oBC1command_arguments=NULL;
  1116.  
  1117.  
  1118. T0* r20command_arguments(void){
  1119. if(fBC1command_arguments==0){
  1120. T0* _arg=NULL;
  1121. T2 _i=0;
  1122. fBC1command_arguments=1;
  1123. _i=se_argc;
  1124. {T38*n=malloc(sizeof(*n));
  1125. *n=M38;
  1126. r38make(n,_i);
  1127. oBC1command_arguments=(T0*)n;
  1128. }
  1129. while (!((_i)==(0))) {
  1130. _i=(_i)-(1);
  1131. _arg=((T0*)e2s(se_argv[_i]));
  1132. /*[IRF3.5put*/((((T38*)oBC1command_arguments))->_storage/*0*/)[_i]=(_arg);
  1133. /*]*/
  1134. }
  1135. }
  1136. return oBC1command_arguments;}
  1137.  
  1138.  
  1139. void r20w_put_character(T3 a1){
  1140. /*[IRF3.6put_character*/{T34* C1=(T34*)(oBC1std_error);
  1141. T3 b1=a1;
  1142. putc(b1,((FILE*)(stderr)));
  1143. }/*]*/
  1144. /*[IRF3.6flush*/{T34* C1=(T34*)(oBC1std_error);
  1145. fflush(stderr);
  1146. }/*]*/
  1147. }
  1148. /*No:STD_OUTPUT.flush*/
  1149.  
  1150.  
  1151. void r22put_string(T22* C,T0* a1){
  1152. T2 _i=0;
  1153. _i=1;
  1154. while (!((_i)>((((T7*)a1))->_count/*4*/))) {
  1155. /*[IRF3.6put_character*/{T22* C1=C;
  1156. T3 b1=/*(IRF4.6item*/((((T7*)a1))->_storage/*0*/)[(_i)-(1)]/*)*/;
  1157. putc(b1,((FILE*)(stdout)));
  1158. }/*]*/
  1159. _i=(_i)+(1);
  1160. }
  1161. }
  1162. /*No:STD_OUTPUT.make*/
  1163. /*No:STD_OUTPUT.put_character*/
  1164.  
  1165.  
  1166. void r10scan_command_line(T10* C){
  1167. T0* _a=NULL;
  1168. T2 _arg=0;
  1169. T2 _state=0;
  1170. _arg=1;
  1171. while (!((_arg)>(/*(IRF4.9argument_count*/((T38*)(r10command_arguments()))->_upper/*8*//*)*/))) {
  1172. _a=r10argument(_arg);
  1173. /*[IF*/
  1174. if(r7is_equal((T7*)(((T0*)ms12_10392)),_a)){
  1175. r7extend((T7*)(oBC10command),'\40');
  1176. r7append((T7*)(oBC10command),_a);
  1177. }
  1178.  else if(r7is_equal(ms10_8197,_a)){
  1179. r20w_put_string(((T0*)ms10_137690));
  1180. C->_clean=0;
  1181. }
  1182.  else if(r7is_equal(ms10_6750,_a)){
  1183. C->_clean=1;
  1184. }
  1185. else{
  1186. r7extend((T7*)(oBC10command),'\40');
  1187. r7append((T7*)(oBC10command),_a);
  1188. {int z1=_state;
  1189.  
  1190. if((0==z1)){
  1191. /*[IF*/
  1192. if((/*(IRF4.6item*/((((T7*)_a))->_storage/*0*/)[(1)-(1)]/*)*/)!=('\55')){
  1193. /*[IF*/
  1194. if(r7has_suffix(((T7*)_a),/*(IRF4.9o_suffix*/r27o_suffix_memory((T27*)(r10system_tools()))/*)*/)){
  1195. }
  1196.  else if(r7has_suffix(((T7*)_a),((T0*)ms11_296))){
  1197. }
  1198.  else if((/*(IRF4.6item*/((((T7*)_a))->_storage/*0*/)[(1)-(1)]/*)*/)==('\53')){
  1199. }
  1200.  else if((((T36*)(oBC11run_control))->_root_class/*0*/)==((void*)(NULL))){
  1201. r36compute_root_class((T36*)(oBC11run_control),_a);
  1202. _state=2;
  1203. }
  1204. /*FI]*/
  1205. }
  1206.  else if(r7is_equal(ms10_318,_a)){
  1207. _state=1;
  1208. }
  1209.  else if(((/*(IRF4.6item*/((((T7*)_a))->_storage/*0*/)[(1)-(1)]/*)*/)==('\55'))&&((/*(IRF4.6item*/((((T7*)_a))->_storage/*0*/)[(2)-(1)]/*)*/)==('o'))){
  1210. }
  1211.  else if(r7is_equal(ms10_747,_a)){
  1212. _state=1;
  1213. }
  1214.  else if(r7is_equal(ms10_6672,_a)){
  1215. _state=1;
  1216. }
  1217. /*FI]*/
  1218. }
  1219.  else 
  1220. if((1==z1)){
  1221. _state=0;
  1222. }
  1223.  else {_state=0;
  1224. }}
  1225. }
  1226. /*FI]*/
  1227. _arg=(_arg)+(1);
  1228. }
  1229. }
  1230. /*No:COMPILE.c_suffix*/
  1231. /*No:COMPILE.o_suffix*/
  1232. T0*oBC10make_file=NULL;
  1233. int fBC11system_tools=0;
  1234. T0*oBC11system_tools=NULL;
  1235.  
  1236.  
  1237. T0* r10system_tools(void){
  1238. if(fBC11system_tools==0){
  1239. fBC11system_tools=1;
  1240. {T27*n=malloc(sizeof(*n));
  1241. *n=M27;
  1242. r27make(n);
  1243. oBC11system_tools=(T0*)n;
  1244. }
  1245. }
  1246. return oBC11system_tools;}
  1247. T0*oBC10command=NULL;
  1248. /*No:COMPILE.fz_01*/
  1249. /*No:COMPILE.fz_02*/
  1250.  
  1251.  
  1252. T0* r10argument(T2 a1){
  1253. T0* R=NULL;
  1254. R=/*(IRF4.6item*/(((T38*)(r10command_arguments()))->_storage/*0*/)[a1]/*)*/;
  1255. return R;
  1256. }
  1257. /*No:COMPILE.clean*/
  1258.  
  1259.  
  1260. void r10make(T10* C){
  1261. T0* _str=NULL;
  1262. T2 _time_out=0;
  1263. /*[IF*/
  1264. if((/*(IRF4.9argument_count*/((T38*)(r10command_arguments()))->_upper/*8*//*)*/)<(1)){
  1265. r27bad_use_exit((T27*)(r10system_tools()),((T0*)ms10_8806));
  1266. }
  1267. /*FI]*/
  1268. r20search_for_verbose_flag((T20*)(oBC11echo));
  1269. r27compile_to_c_in((T27*)(r10system_tools()),oBC10command);
  1270. r10scan_command_line(C);
  1271. /*[IF*/
  1272. if((((T36*)(oBC11run_control))->_root_class/*0*/)==((void*)(NULL))){
  1273. r20w_put_string(((T0*)ms10_38827));
  1274. exit(1);
  1275. }
  1276. /*FI]*/
  1277. _str=r27remove_make_script((T27*)(r10system_tools()));
  1278. r20call_system((T20*)(oBC11echo),oBC10command);
  1279. _time_out=2000;
  1280. while (!(((_time_out)==(0))||(/*(IRF4.7is_connected*/(((T28*)(oBC10make_file))->_path/*4*/)!=(NULL)/*)*/))) {
  1281. r28connect_to((T28*)(oBC10make_file),_str);
  1282. _time_out=(_time_out)-(1);
  1283. }
  1284. /*[IF*/
  1285. if(!(/*(IRF4.7is_connected*/(((T28*)(oBC10make_file))->_path/*4*/)!=(NULL)/*)*/)){
  1286. r20w_put_string(((T0*)ms12_3810));
  1287. r20w_put_string(_str);
  1288. r20w_put_string(((T0*)ms10_39060));
  1289. exit(1);
  1290. }
  1291. /*FI]*/
  1292. r20put_string((T20*)(oBC11echo),((T0*)ms10_20501));
  1293. r20put_string((T20*)(oBC11echo),_str);
  1294. r20put_string((T20*)(oBC11echo),((T0*)ms10_8960));
  1295. r28read_line((T28*)(oBC10make_file));
  1296. while (!((((T7*)(oBC29last_string))->_count/*4*/)==(0))) {
  1297. r7copy((T7*)(oBC10command),oBC29last_string);
  1298. r20call_system((T20*)(oBC11echo),oBC10command);
  1299. r28read_line((T28*)(oBC10make_file));
  1300. }
  1301. r28disconnect((T28*)(oBC10make_file));
  1302. /*[IF*/
  1303. if((C)->_clean/*0*/){
  1304. /*[IRF3.3clear*/((((T7*)((T7*)(oBC10command))))->_count)=(0);
  1305. /*]*/
  1306. r27clean_in((T27*)(r10system_tools()),oBC10command);
  1307. r7extend((T7*)(oBC10command),'\40');
  1308. /*[IF*/
  1309. if(((T20*)(oBC11echo))->_verbose/*0*/){
  1310. r7append((T7*)(oBC10command),((T0*)ms12_10392));
  1311. r7extend((T7*)(oBC10command),'\40');
  1312. }
  1313. /*FI]*/
  1314. r7append((T7*)(oBC10command),_str);
  1315. r20call_system((T20*)(oBC11echo),oBC10command);
  1316. }
  1317. else{
  1318. r20put_string((T20*)(oBC11echo),((T0*)ms10_12480));
  1319. }
  1320. /*FI]*/
  1321. r20put_string((T20*)(oBC11echo),((T0*)ms12_3066));
  1322. }
  1323. /*No:COMPILE.argument_count*/
  1324. /*No:COMPILE.exit_failure_code*/
  1325. /*No:COMPILE.fz_verbose_flag*/
  1326.  
  1327.  
  1328. T0* r10command_arguments(void){
  1329. if(fBC1command_arguments==0){
  1330. T0* _arg=NULL;
  1331. T2 _i=0;
  1332. fBC1command_arguments=1;
  1333. _i=se_argc;
  1334. {T38*n=malloc(sizeof(*n));
  1335. *n=M38;
  1336. r38make(n,_i);
  1337. oBC1command_arguments=(T0*)n;
  1338. }
  1339. while (!((_i)==(0))) {
  1340. _i=(_i)-(1);
  1341. _arg=((T0*)e2s(se_argv[_i]));
  1342. /*[IRF3.5put*/((((T38*)oBC1command_arguments))->_storage/*0*/)[_i]=(_arg);
  1343. /*]*/
  1344. }
  1345. }
  1346. return oBC1command_arguments;}
  1347.  
  1348.  
  1349. void r28read_line(T28* C){
  1350. /*[IRF3.3clear*/((((T7*)((T7*)(oBC29last_string))))->_count)=(0);
  1351. /*]*/
  1352. r28read_line_in(C,oBC29last_string);
  1353. }
  1354.  
  1355.  
  1356. void r28read_line_in(T28* C,T0* a1){
  1357. T2 _mem=0;
  1358. r28read_character(C);
  1359. _mem=(C)->_memory/*12*/;
  1360. while (!((((_mem)==((EOF)))||((_mem)==(((unsigned char)'\n'))))||((_mem)==(((unsigned char)'\15'))))) {
  1361. r7extend(((T7*)a1),((T3)(_mem)));
  1362. _mem=getc((FILE*)((C)->_input_stream/*8*/));
  1363. }
  1364. C->_memory=_mem;
  1365. /*[IF*/
  1366. if((_mem)==(((unsigned char)'\15'))){
  1367. r28read_character(C);
  1368. /*[IF*/
  1369. if((/*(IRF4.6last_character*/((T3)((C)->_memory/*12*/))/*)*/)!=('\n')){
  1370. /*[IRF3.3unread_character*/((((T28*)(C)))->_push_back_flag)=(1);
  1371. /*]*/
  1372. }
  1373. /*FI]*/
  1374. }
  1375. /*FI]*/
  1376. }
  1377. /*No:STD_FILE_READ.path*/
  1378.  
  1379.  
  1380. void r28skip_separators(T28* C){
  1381. while (!((r28end_of_input(C))||(!(r3is_separator(/*(IRF4.6last_character*/((T3)((C)->_memory/*12*/))/*)*/))))) {
  1382. r28read_character(C);
  1383. }
  1384. }
  1385.  
  1386.  
  1387. void r28read_word(T28* C){
  1388. r28skip_separators(C);
  1389. /*[IRF3.3clear*/((((T7*)((T7*)(oBC29last_string))))->_count)=(0);
  1390. /*]*/
  1391. while (!((r28end_of_input(C))||(r3is_separator(/*(IRF4.6last_character*/((T3)((C)->_memory/*12*/))/*)*/)))) {
  1392. r7extend((T7*)(oBC29last_string),/*(IRF4.6last_character*/((T3)((C)->_memory/*12*/))/*)*/);
  1393. r28read_character(C);
  1394. }
  1395. }
  1396. /*No:STD_FILE_READ.memory*/
  1397. /*No:STD_FILE_READ.unread_character*/
  1398. /*No:STD_FILE_READ.last_character*/
  1399. /*No:STD_FILE_READ.input_stream*/
  1400. T0*oBC29last_string=NULL;
  1401.  
  1402.  
  1403. T6 r28end_of_input(T28* C){
  1404. T6 R=0;
  1405. /*[IF*/
  1406. if(!((C)->_push_back_flag/*0*/)){
  1407. R=((C)->_memory/*12*/)==((EOF));
  1408. }
  1409. /*FI]*/
  1410. return R;
  1411. }
  1412.  
  1413.  
  1414. void r28connect_to(T28* C,T0* a1){
  1415. T8 _p=0;
  1416. _p=r7to_external(((T7*)a1));
  1417. C->_input_stream=fopen((char*)_p,"r");
  1418. /*[IF*/
  1419. if((NULL!=(C)->_input_stream/*8*/)){
  1420. C->_push_back_flag=0;
  1421. C->_memory=((unsigned char)'\40');
  1422. C->_path=a1;
  1423. }
  1424. /*FI]*/
  1425. }
  1426. /*No:STD_FILE_READ.is_connected*/
  1427.  
  1428.  
  1429. void r28disconnect(T28* C){
  1430. fclose((C)->_input_stream/*8*/);
  1431. C->_path=NULL;
  1432. }
  1433. /*No:STD_FILE_READ.push_back_flag*/
  1434. /*No:STD_FILE_READ.make*/
  1435.  
  1436.  
  1437. void r28read_character(T28* C){
  1438. /*[IF*/
  1439. if((C)->_push_back_flag/*0*/){
  1440. C->_push_back_flag=0;
  1441. }
  1442. else{
  1443. C->_memory=getc((FILE*)((C)->_input_stream/*8*/));
  1444. }
  1445. /*FI]*/
  1446. }
  1447. T0*oBC35std_fr1=NULL;
  1448.  
  1449.  
  1450. void r35delete(int C,T0* a1){
  1451. T8 _p=0;
  1452. _p=r7to_external(((T7*)a1));
  1453. remove(((char*)_p));
  1454. }
  1455.  
  1456.  
  1457. T6 r35is_readable(T0* a1){
  1458. T6 R=0;
  1459. r28connect_to((T28*)(oBC35std_fr1),a1);
  1460. R=/*(IRF4.7is_connected*/(((T28*)(oBC35std_fr1))->_path/*4*/)!=(NULL)/*)*/;
  1461. /*[IF*/
  1462. if(R){
  1463. r28disconnect((T28*)(oBC35std_fr1));
  1464. }
  1465. /*FI]*/
  1466. return R;
  1467. }
  1468. T10*eiffel_root_object=NULL;
  1469. int se_argc;
  1470. char**se_argv;
  1471.  
  1472.  
  1473. void initialize_eiffel_runtime(int argc,char*argv[]){
  1474. se_argc=argc;
  1475. se_argv=argv;
  1476. #ifdef SIGINT
  1477. signal(SIGINT,sigrsp);
  1478. #endif
  1479. #ifdef SIGQUIT
  1480. signal(SIGQUIT,sigrsp);
  1481. #endif
  1482. #ifdef SIGTERM
  1483. signal(SIGTERM,sigrsp);
  1484. #endif
  1485. #ifdef SIGBREAK
  1486. signal(SIGBREAK,sigrsp);
  1487. #endif
  1488. #ifdef SIGKILL
  1489. signal(SIGKILL,sigrsp);
  1490. #endif
  1491. se_msi1();
  1492. oBC35std_fr1=NULL;
  1493. {T28*n=malloc(sizeof(*n));
  1494. *n=M28;
  1495. /*[IRF3.1make*//*]*/
  1496. oBC35std_fr1=(T0*)n;
  1497. }
  1498. /*PCO*/
  1499. oBC29last_string=NULL;
  1500. {T7*n=malloc(sizeof(*n));
  1501. *n=M7;
  1502. r7make(n,256);
  1503. oBC29last_string=(T0*)n;
  1504. }
  1505. /*PCO*/
  1506. oBC11echo=NULL;
  1507. {T20*n=malloc(sizeof(*n));
  1508. *n=M20;
  1509. /*[IRF3.1make*//*]*/
  1510. oBC11echo=(T0*)n;
  1511. }
  1512. /*PCO*/
  1513. oBC10command=NULL;
  1514. {T7*n=malloc(sizeof(*n));
  1515. *n=M7;
  1516. r7make(n,256);
  1517. oBC10command=(T0*)n;
  1518. }
  1519. /*PCO*/
  1520. oBC10make_file=NULL;
  1521. {T28*n=malloc(sizeof(*n));
  1522. *n=M28;
  1523. /*[IRF3.1make*//*]*/
  1524. oBC10make_file=(T0*)n;
  1525. }
  1526. /*PCO*/
  1527. oBC11run_control=NULL;
  1528. {T36*n=malloc(sizeof(*n));
  1529. *n=M36;
  1530. /*[IRF3.1make*//*]*/
  1531. oBC11run_control=(T0*)n;
  1532. }
  1533. /*PCO*/
  1534. oBC1file_tools=0;
  1535. /*PCO*/
  1536. oBC1std_output=NULL;
  1537. {T22*n=malloc(1);
  1538. /*[IRF3.1make*//*]*/
  1539. oBC1std_output=(T0*)n;
  1540. }
  1541. /*PCO*/
  1542. oBC1std_error=NULL;
  1543. {T34*n=malloc(1);
  1544. /*[IRF3.1make*//*]*/
  1545. oBC1std_error=(T0*)n;
  1546. }
  1547. /*PCO*/
  1548. oBC27system_list=NULL;
  1549. oBC27system_list=se_ma30(8,
  1550. ((T0*)ms27_2470),
  1551. ((T0*)ms27_1356),
  1552. ((T0*)ms27_708),
  1553. ((T0*)ms27_12951),
  1554. ((T0*)ms27_654),
  1555. ((T0*)ms27_1336),
  1556. ((T0*)ms27_756),
  1557. ((T0*)ms27_9331));
  1558. /*PCO*/
  1559. oBC11tmp_file_read=NULL;
  1560. {T28*n=malloc(sizeof(*n));
  1561. *n=M28;
  1562. /*[IRF3.1make*//*]*/
  1563. oBC11tmp_file_read=(T0*)n;
  1564. }
  1565. /*PCO*/
  1566. eiffel_root_object=malloc(sizeof(*eiffel_root_object));
  1567. *eiffel_root_object=M10;
  1568. }
  1569. int main(int argc,char*argv[]){
  1570. initialize_eiffel_runtime(argc,argv);
  1571. {T10*n=eiffel_root_object;
  1572. r10make(n);
  1573. }
  1574. exit(0);
  1575. }
  1576. T7*ms11_300;
  1577. T7*ms11_296;
  1578. T7*ms11_306;
  1579. T7*ms20_72891;
  1580. T7*ms27_852461;
  1581. T7*ms12_166;
  1582. T7*ms20_12909;
  1583. T7*ms27_1128;
  1584. T7*ms27_1468;
  1585. T7*ms27_966;
  1586. T7*ms27_756;
  1587. T7*ms10_747;
  1588. T7*ms12_957;
  1589. T7*ms27_12951;
  1590. T7*ms27_226958;
  1591. T7*ms10_6750;
  1592. T7*ms10_8960;
  1593. T7*ms27_32565;
  1594. T7*ms27_10175;
  1595. T7*ms20_8760;
  1596. T7*ms27_1084;
  1597. T7*ms12_3810;
  1598. T7*ms12_2650;
  1599. T7*ms12_10392;
  1600. T7*ms10_318;
  1601. T7*ms27_720532;
  1602. T7*ms12_288;
  1603. T7*ms27_0;
  1604. T7*ms27_2470;
  1605. T7*ms27_2375;
  1606. T7*ms10_137690;
  1607. T7*ms27_708;
  1608. T7*ms12_1071;
  1609. T7*ms10_8806;
  1610. T7*ms27_44196;
  1611. T7*ms11_583550;
  1612. T7*ms20_26523;
  1613. T7*ms12_3066;
  1614. T7*ms10_38827;
  1615. T7*ms27_132226;
  1616. T7*ms27_9331;
  1617. T7*ms27_8721;
  1618. T7*ms27_303;
  1619. T7*ms10_6672;
  1620. T7*ms11_1632;
  1621. T7*ms27_1356;
  1622. T7*ms27_1336;
  1623. T7*ms27_1116;
  1624. T7*ms27_1512a;
  1625. T7*ms10_8197;
  1626. T7*ms10_39060;
  1627. T7*ms10_12480;
  1628. T7*ms12_11640;
  1629. T7*ms20_25494;
  1630. T7*ms27_654;
  1631. T7*ms27_8302;
  1632. T7*ms27_1072;
  1633. T7*ms27_1512;
  1634. T7*ms12_18788;
  1635. T7*ms12_13428;
  1636. T7*ms13_20868;
  1637. T7*ms27_46940;
  1638. T7*ms27_26690;
  1639. T7*ms27_38940;
  1640. T7*ms27_20300;
  1641. T7*ms27_39440;
  1642. T7*ms27_23364;
  1643. T7*ms10_20501;
  1644.  
  1645.  
  1646. void se_msi1(void){
  1647. ms11_300=se_ms(2,".e");
  1648. ms11_296=se_ms(2,".c");
  1649. ms11_306=se_ms(2,".h");
  1650. ms20_72891=se_ms(39,"Unexpected end_of_input while reading \"");
  1651. ms27_852461=se_ms(269,"You should update the value of the \"SmallEiffel\" system environment variable.\nSince release -0.79, the \"SmallEiffel\" system environment variable must be the absolute path of the \"system.se\" file.\nFor example \"/usr/lib/SmallEiffel/sys/system.se\" under Unix like system.\n");
  1652. ms12_166=se_ms(2,"\".");
  1653. ms20_12909=se_ms(13,"System call \"");
  1654. ms27_1128=se_ms(4,".EXE");
  1655. ms27_1468=se_ms(4,".bat");
  1656. ms27_966=se_ms(3,"man");
  1657. ms27_756=se_ms(3,"VMS");
  1658. ms10_747=se_ms(3,"-cc");
  1659. ms12_957=se_ms(3,"bin");
  1660. ms27_12951=se_ms(9,"Macintosh");
  1661. ms27_226958=se_ms(74,"System environment variable \"SmallEiffel\" not set.\nTrying default value: \"");
  1662. ms10_6750=se_ms(6,"-clean");
  1663. ms10_8960=se_ms(16,"\" command file.\n");
  1664. ms27_32565=se_ms(39,"\"Hope this is a Macintosh like system.\n");
  1665. ms27_10175=se_ms(11,"System is \"");
  1666. ms20_8760=se_ms(10,"Removing \"");
  1667. ms27_1084=se_ms(4,".BAT");
  1668. ms12_3810=se_ms(6,"File \"");
  1669. ms12_2650=se_ms(5,"clean");
  1670. ms12_10392=se_ms(8,"-verbose");
  1671. ms10_318=se_ms(2,"-o");
  1672. ms27_720532=se_ms(244,"Unable to find file \"system.se\".\nPlease, set the environment variable \"SmallEiffel\" with the appropriate absolute path to this file.\nExample for Unix: \"/usr/lib/SmallEiffel/sys/system.se\"\nExample for DOS/Windows: \"C:\\SmallEiffel\\sys\\system.se\"\n");
  1673. ms12_288=se_ms(3,"\".\n");
  1674. ms27_0=se_ms(0,"");
  1675. ms27_2470=se_ms(5,"Amiga");
  1676. ms27_2375=se_ms(5,".make");
  1677. ms10_137690=se_ms(98,"Flag -c_code is now obsolete (this is the default).\nSee documentation of `compile\' (flag -clean).\n");
  1678. ms27_708=se_ms(3,"DOS");
  1679. ms12_1071=se_ms(3,"sys");
  1680. ms10_8806=se_ms(7,"compile");
  1681. ms27_44196=se_ms(29,"Unknown system name in file\n\"");
  1682. ms11_583550=se_ms(110,"..............................................................................................................");
  1683. ms20_26523=se_ms(21,"Trying to read file \"");
  1684. ms12_3066=se_ms(6,"Done.\n");
  1685. ms10_38827=se_ms(41,"Error : No <Root-Class> in command line.\n");
  1686. ms27_132226=se_ms(34,"/usr/lib/SmallEiffel/sys/system.se");
  1687. ms27_9331=se_ms(7,"Windows");
  1688. ms27_8721=se_ms(9,"o_suffix.");
  1689. ms27_303=se_ms(3,"\'.\n");
  1690. ms10_6672=se_ms(6,"-cecil");
  1691. ms11_1632=se_ms(4,".txt");
  1692. ms27_1356=se_ms(4,"BeOS");
  1693. ms27_1336=se_ms(4,"UNIX");
  1694. ms27_1116=se_ms(4,".COM");
  1695. ms27_1512a=se_ms(4,".exe");
  1696. ms10_8197=se_ms(7,"-c_code");
  1697. se_msi2();
  1698. }
  1699.  
  1700.  
  1701. void se_msi2(void){
  1702. ms10_39060=se_ms(45,"\" not found. Error(s) during `compile_to_c\'.\n");
  1703. ms10_12480=se_ms(20,"C code not removed.\n");
  1704. ms12_11640=se_ms(12,"\" not found.");
  1705. ms20_25494=se_ms(21,"Reading one word in \"");
  1706. ms27_654=se_ms(3,"OS2");
  1707. ms27_8302=se_ms(14,"\"Last chance.\n");
  1708. ms27_1072=se_ms(4,".CMD");
  1709. ms27_1512=se_ms(4,".exe");
  1710. ms12_18788=se_ms(11,"SmallEiffel");
  1711. ms12_13428=se_ms(9,"system.se");
  1712. ms13_20868=se_ms(12,"compile_to_c");
  1713. ms27_46940=se_ms(20,"Bad use of command `");
  1714. ms27_26690=se_ms(34,"\"Hope this is a Unix like system.\n");
  1715. ms27_38940=se_ms(44,"\"Hope this is a DOS or Windows like system.\n");
  1716. ms27_20300=se_ms(28,"\"Hope this is a VMS system.\n");
  1717. ms27_39440=se_ms(29,"See docmentation in file:\n   ");
  1718. ms27_23364=se_ms(36,"\".\nCurrently handled system names :\n");
  1719. ms10_20501=se_ms(19,"C compiling using \"");
  1720. }
  1721.  
  1722.  
  1723. void*se_ma30(int argc,...){
  1724. T30*m;
  1725. va_list pa;
  1726. T0**s;
  1727. m=malloc(sizeof(*m));
  1728. *m=M30;
  1729. if(argc){
  1730. s=malloc(argc*sizeof(*s));
  1731. m->_storage=s;
  1732. m->_capacity=argc;
  1733. m->_lower=1;
  1734. m->_upper=argc;
  1735. va_start(pa,argc);
  1736. while(argc--){
  1737. *(s++)=((void*)(va_arg(pa,char*)));
  1738. }
  1739. va_end(pa);
  1740. }
  1741. else{
  1742. m->_storage=NULL;
  1743. m->_capacity=0;
  1744. m->_lower=1;
  1745. m->_upper=0;
  1746. }
  1747. return m;}
  1748.  
  1749.